package tests;

import static org.junit.Assert.assertTrue;
import game.model.Rayo;
import game.model.SemiEspejo;

import java.awt.Color;
import java.util.HashSet;
import java.util.Set;

import org.junit.Test;

public class SemiEspejoTest {
	
	/**
	 * Testea getSalida y rotar del SemiEspejo
	 *
	 */
	
	@Test
	public void getSalidaTest() {
		SemiEspejo se = new SemiEspejo(0);
		Set<Rayo> anterior = new HashSet<Rayo>();
		Set<Rayo> salida;
		Rayo entrada1 = new Rayo(Color.red, 3);
		Rayo entrada2 = new Rayo(Color.blue, 2);
		
		salida = se.getSalida(entrada1,anterior);
		assertTrue(salida.size() == 2);
		for(Rayo rayo : salida){
			assertTrue(rayo.getColor() == entrada1.getColor());
		}
		
		salida = se.getSalida(entrada2, anterior);
		assertTrue(salida.size() == 2);
		for(Rayo rayo : salida){
			assertTrue(rayo.getColor().equals(SemiEspejo.mix(entrada1.getColor(), entrada2.getColor())));
		}
		
		assertTrue(anterior.size() == 4);
		
		se.rotar();
		
		salida = se.getSalida(entrada1,anterior);
		assertTrue(salida.size() == 2);
		for(Rayo rayo : salida){
			assertTrue(rayo.getColor() == entrada1.getColor());
		}
		
		salida = se.getSalida(entrada2, anterior);
		assertTrue(salida.size() == 2);
		for(Rayo rayo : salida){
			assertTrue(rayo.getColor() == entrada2.getColor());
		}
		
		assertTrue(anterior.size() == 4);
	}
}
